#define _CRT_SECURE_NO_WARNINGS 1
#pragma once

#if 0
#include<iostream>
using namespace std;
bool isPrime(int n)
{
	for (int i = 2; i <= sqrt(n); i++)
	{
		if (n % i == 0)
			return false;
	}
	return true;
}
void test1()
{
	int count = 0;
	for (int i = 100; i <= 10000; i++)
	{
		if (isPrime(i))
			count++;
	}
	cout << count << endl;
}
int main()
{
	test1();
	return 0;
}
#endif

#if 0
#include<iostream>
#include<vector>
using namespace std;

int Check(int key)
{
	int n =4000;
	vector<vector<int>> vv(n + 1);
	for (int i = 0; i <= n; i++)//n行
	{
		vv[i].resize(i + 1,0);
		vv[i][0] = vv[i][vv[i].size() - 1] = 1;
	}
	int count = 1;
	for (int i = 0; i < vv.size(); i++)
	{
		for (int j = 0; j < vv[i].size(); j++)
		{
			if (vv[i][j] == 0)
				vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];
			//cout << vv[i][j] << " ";
			if (vv[i][j] == key)
				return count;

			count++;
		}
	}
	return count;
}
int main()	
{
	cout << Check(100) << endl;
	return 0;
}
#endif

//#include<iostream>
//#include<vector>
//#include<string>
//#include<unordered_map>
//#include<algorithm>
//using namespace std;
//int main()
//{
//	string word;
//	cin >> word;
//
//	string txt;
//	getline(cin, txt);//读取输入word之后的空行
//	
//	getline(cin, txt);
//	transform(word.begin(), word.end(), word.begin(), ::toupper);//转大写
//	vector<string> v;//保存每一个单词
//	string tmp;
//	for (int i = 0; i < txt.size(); i++)
//	{
//		if (txt[i] != ' ')
//			tmp += txt[i];
//		else
//		{
//			v.emplace_back(tmp);
//			tmp.clear();
//		}
//	}
//	v.emplace_back(tmp); //最后一个单词
//
//	//for (auto& x : v)
//	//	cout << x << " ";
//	//保存的所有单词转为大写
//	for (auto& x : v)
//	{
//		//cout << x << " -> ";
//		transform(x.begin(), x.end(), x.begin(), ::toupper);
//		//cout << x << endl;
//	}
//	//统计每个单词出现次数和第一次出现的位置
//	unordered_map<string, pair<int, int>> um;
//	for (int i = 0;i<v.size();i++) 
//	{
//		pair<int,int>& p = um[v[i]];
//		p.first++;
//		if (p.second == 0 && p.first == 1)
//			p.second = i;
//	}
//	auto pos = um.find(word);
//	if (pos != um.end())
//	{
//		cout << pos->second.first << " " << pos->second.second << endl;
//	}
//	else
//	{
//		cout << "-1" << endl;
//	}
//	return 0;
//}



#include<bits/stdc++.h>
using namespace std;
enum Status
{
	VALID,
	UNVALID
};
enum Status status = UNVALID;//不合法
int myAtoi(const char* str)
{
	if(str == NULL || str == "") //空指针 || 空字符串 ->异常返回
		return 0;
	//跳过空格 
	while(isspace(*str))
		str++;
	
	//判断是否有正负号
	int flag = 1;//假设为正数
	if(*str == '+')
	{
		flag = 1;
		str++;
	}
	else if(*str == '-')
	{
		flag = -1;
		str++;
	}

	//转换 
	long long ret = 0;//设置为long long类型防止溢出
	while(*str)
	{
		if(isdigit(*str))
		{
			ret = ret*10 + (*str - '0')*flag;
			str++;
			if(ret > INT_MAX || ret < INT_MIN)
				return 0;
		}
		else //遇到非数字字符
		{
			status = VALID;//合法状态
			return (int)ret;
		}
	}
	
	return (int)ret;
}
int main()
{
	cout << myAtoi("100")<<endl;
	cout << myAtoi("    -123")<<endl;
	cout << myAtoi("    1a0")<<endl;
	cout << myAtoi("   10   ")<<endl;
	cout << myAtoi("   -103")<<endl;
	cout << myAtoi("")<<endl;
	cout << myAtoi(NULL)<<endl;
	cout << myAtoi("999999999999999999999999999999")<<endl;
    cout << myAtoi("-999999999999999999999999999999")<<endl;
	return 0;
}
